From: Sebastian Keller Date: Tue, 31 May 2022 16:18:45 +0000 (+0200) Subject: magnifier: Include SSD when calculating screen coordinates for events X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~461^2^2~325 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=1952549788f9f9dad31359d9d00d827e1cd3d453;p=gnome-shell.git magnifier: Include SSD when calculating screen coordinates for events When calculating the on screen coordinates of events from the window relative coordinates, using the frame rect will include the decorations added by the WM for SSD windows. This was causing the calculated coordinates to be slightly off. Fix this by using the client rect for SSD windows. Part-of: --- diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js index 30e53398a..44cdef0af 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js @@ -845,14 +845,18 @@ var ZoomRegion = class ZoomRegion { throw new Error(`Failed to validate parent window: ${e}`); } - const focusWindowRect = global.display.focus_window?.get_frame_rect(); - if (!focusWindowRect) + const { focusWindow } = global.display; + if (!focusWindow) return null; + let windowRect = focusWindow.get_frame_rect(); + if (!focusWindow.is_client_decorated()) + windowRect = focusWindow.frame_rect_to_client_rect(windowRect); + const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; const screenSpaceExtents = new Atspi.Rect({ - x: focusWindowRect.x + (scaleFactor * extents.x), - y: focusWindowRect.y + (scaleFactor * extents.y), + x: windowRect.x + (scaleFactor * extents.x), + y: windowRect.y + (scaleFactor * extents.y), width: scaleFactor * extents.width, height: scaleFactor * extents.height, });